package com.copsoftware.reportes.geografico.support;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.struts.util.LabelValueBean;
import org.springframework.beans.BeanUtils;

import com.copsoftware.reportes.geografico.beans.BeanJSONString;
import com.copsoftware.reportes.geografico.beans.BeanTematicoPuntualDelitos;
import com.copsoftware.struts.forms.AdministradorTematicosForm;
import com.copsoftware.support.json.JSONObject;

public class BeanPopulateTematicoPuntualDelito {

	public static List procesar(List listaDelitos) {
		List listaBeanTematicoPuntual = new ArrayList();
		for (Iterator iter = listaDelitos.iterator(); iter.hasNext();) {
			LabelValueBean element = (LabelValueBean) iter.next();
			BeanTematicoPuntualDelitos bn = getBeanTematicoPuntualDelito(element);
			listaBeanTematicoPuntual.add(bn);
		}
		return listaBeanTematicoPuntual;
	}

	private static BeanTematicoPuntualDelitos getBeanTematicoPuntualDelito(
			LabelValueBean element) {
		BeanTematicoPuntualDelitos bn = new BeanTematicoPuntualDelitos();
		bn.setTipoDelito(element.getValue());
		bn.setDeDelito(element.getLabel());
		bn.setConAgrupacion(false);
		bn.setConEstado(false);
		bn.setConIntervalo(false);
		return bn;
	}

	public static List crearJSONObjects(
			AdministradorTematicosForm form, Map mapCodDelitos) {
		List listaJSONStringObjects = new ArrayList();
		Collection listaBeanTematicoPuntualDelito = (Collection) form
		.getListaTablaDelitos().getAddedData();
		for (Iterator iter = listaBeanTematicoPuntualDelito.iterator(); iter
				.hasNext();) {
			BeanTematicoPuntualDelitos bnAntiguo = (BeanTematicoPuntualDelitos) iter
					.next();
			boolean esRequerido = bnAntiguo.isConTipoDelito();
			BeanTematicoPuntualDelitos bnNuevo;
			if (esRequerido) {
				bnNuevo = actualizarBeanTematicoPuntualDelito(bnAntiguo,form,mapCodDelitos);
				BeanJSONString bnBeanJSONString = BeanJSONStringBuilder.execute(bnNuevo);
				listaJSONStringObjects.add(bnBeanJSONString);
			}			
		}
		return listaJSONStringObjects;
	}

	private static BeanTematicoPuntualDelitos actualizarBeanTematicoPuntualDelito(
			BeanTematicoPuntualDelitos bnAntiguo, AdministradorTematicosForm form, Map mapCodDelitos) {
		BeanTematicoPuntualDelitos bnNuevo = new BeanTematicoPuntualDelitos();
		BeanUtils.copyProperties(bnAntiguo, bnNuevo);
		String estado = form.getEstado();
		boolean esRequeridoEstado = bnAntiguo.isConEstado();		
		if (esRequeridoEstado)
			bnNuevo.setEstado(estado);
		
		String numIntervalos = form.getNumeroIntervalos();
		boolean esRequeridoNumIntervalos = bnAntiguo.isConIntervalo();		
		if (esRequeridoNumIntervalos)
			bnNuevo.setNumIntevalos(numIntervalos);
		
		boolean esRequeridoAgrupacion = bnAntiguo.isConAgrupacion();
		if (esRequeridoAgrupacion)
		{
			
		}
		bnNuevo.setTipoDelito((String) mapCodDelitos.get(bnAntiguo.getDeDelito()));
		return bnNuevo;
	}

}
